const request = require('./request.js').default;

/**
 * 用户相关 API
 */
const userAPI = {
  /**
   * 用户登录（微信 code 换取 openid）
   * @param {string} code - 微信登录 code
   */
  login: (code) => request('/user/login', 'POST', { code }),

  /**
   * 更新用户信息
   * @param {Object} data - 用户信息
   * @param {string} data.openid - 用户 openid
   * @param {Object} data.userInfo - 用户信息对象
   */
  updateUserInfo: (data) => request('/user/update', 'POST', data),

  /**
   * 获取用户信息
   * @param {string} userId - 用户ID（可选，不传则获取当前用户）
   */
  getUserInfo: (userId) => request(`/users/${userId || 'me'}`, 'GET'),

  /**
   * 更新用户信息
   * @param {Object} data - 用户信息
   * @param {string} data.nickname - 昵称
   * @param {string} data.avatar - 头像
   * @param {string} data.bio - 个人简介
   */
  updateUserProfile: (data) => request('/users/me', 'PUT', data),

  /**
   * 获取用户徽章列表
   * @param {string} userId - 用户ID（可选，不传则获取当前用户）
   */
  getUserBadges: (userId) => request(`/users/${userId || 'me'}/badges`, 'GET'),

  /**
   * 获取用户统计信息
   * @param {string} userId - 用户ID（可选，不传则获取当前用户）
   */
  getUserStats: (userId) => request(`/users/${userId || 'me'}/stats`, 'GET'),

  /**
   * 获取用户书单
   * @param {string} userId - 用户ID（可选，不传则获取当前用户）
   * @param {Object} params - 查询参数
   */
  getUserBooks: (userId, params = {}) => request(`/users/${userId || 'me'}/books`, 'GET', params),

  /**
   * 获取用户书摘列表
   * @param {string} userId - 用户ID（可选，不传则获取当前用户）
   * @param {Object} params - 查询参数
   */
  getUserPosts: (userId, params = {}) => {
    const queryParams = { ...params };
    // 只有当userId存在且不为undefined时才添加到参数中
    if (userId && userId !== 'undefined' && userId !== undefined) {
      queryParams.userId = userId;
    }
    return request('/book/getUserQuotes', 'GET', queryParams);
  },

  /**
   * 关注用户
   * @param {string} userId - 要关注的用户ID
   */
  followUser: (userId) => request(`/users/${userId}/follow`, 'POST'),

  /**
   * 取消关注用户
   * @param {string} userId - 要取消关注的用户ID
   */
  unfollowUser: (userId) => request(`/users/${userId}/unfollow`, 'POST'),

  /**
   * 获取关注列表
   * @param {string} userId - 用户ID（可选，不传则获取当前用户）
   * @param {Object} params - 查询参数
   */
  getFollowings: (userId, params = {}) => request(`/users/${userId || 'me'}/followings`, 'GET', params),

  /**
   * 获取粉丝列表
   * @param {string} userId - 用户ID（可选，不传则获取当前用户）
   * @param {Object} params - 查询参数
   */
  getFollowers: (userId, params = {}) => request(`/users/${userId || 'me'}/followers`, 'GET', params),

  /**
   * 获取用户称号信息
   * @param {string} userId - 用户ID（可选，不传则获取当前用户）
   */
  getUserTitle: (userId) => request(`/users/${userId || 'me'}/title`, 'GET'),

  /**
   * 获取用户阅读记录
   * @param {string} userId - 用户ID（可选，不传则获取当前用户）
   * @param {Object} params - 查询参数
   */
  getUserReadingHistory: (userId, params = {}) => request(`/users/${userId || 'me'}/reading-history`, 'GET', params),
};

module.exports = { userAPI };
